package com.lemon.exam.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import reactor.core.scheduler.Scheduler;
import reactor.core.scheduler.Schedulers;

/**
 * 线程池配置
 *
 * @author Lemon
 * @since 2025/4/11 15:47
 */
@Configuration
public class SchedulerConfiguration {
    /**
     * 日志线程池
     *
     * @return
     */
    @Bean("logScheduler")
    public Scheduler logScheduler() {
        return Schedulers.newBoundedElastic(
                10,// 最大线程数
                1000,// 任务队列容量
                "log-worker-pool",// 线程池名称
                60,// 线程存活时间(s)
                true// 守护线程
        );
    }

    /**
     * 邮件线程池
     *
     * @return
     */
    @Bean("mailScheduler")
    public Scheduler mailScheduler() {
        return Schedulers.newBoundedElastic(
                100,// 最大线程数
                1000,// 任务队列容量
                "mail-worker-pool",// 线程池名称
                60,// 线程存活时间(s)
                true// 守护线程
        );
    }

    /**
     * 短信线程池
     *
     * @return
     */
    @Bean("smsScheduler")
    public Scheduler smsScheduler() {
        return Schedulers.newBoundedElastic(
                100,// 最大线程数
                1000,// 任务队列容量
                "sms-worker-pool",// 线程池名称
                60,// 线程存活时间(s)
                true// 守护线程
        );
    }
}
